//
//#ifndef SX_MSM_SIMULATION_RECORDING_H
//#define SX_MSM_SIMULATION_RECORDING_H
//
//#include <sxArrayList.h>
//#include <sxMassSpringSimulation.h>
//#include "MSM_SimulationFrame.h"
//
//namespace Sx {
//namespace Simulation {
//namespace Recording {
//
//class MSM_SimulationRecording {
//public:
//	MSM_SimulationRecording();
//	virtual ~MSM_SimulationRecording();
//
//	bool setSimulation(Simulations::MassSpringSimulation* simulation);
//
//	/*
//	 * Returns the next unused frame in this recording. This function will
//	 * always return a valid reference to a frame in this recording. Once a
//	 * frame has been obtained using this function, its data can be properly
//	 * set. If the internal array does not contain enough frames, it will
//	 * automatically be reallocated and then provide the next valid frame.
//	 */
//	MSM_SimulationFrame& getNextFrame();
//
//	/*
//	 * Returns a reference to the frame at the provided index. This is a
//	 * reference to ensure that no copies of the frame will be made during the
//	 * playback of this recording. If success is set to false after this
//	 * function is called then a meaningless frame will be returned and should
//	 * not be used. If success is true after the call to this function then
//	 * the returned frame reference is valid and can be used.
//	 */
//	MSM_SimulationFrame& getFrame(unsigned int index, bool& success);
//
//	/* The following functions return the number of frames in this recording. */
//	unsigned int size() const;
//	unsigned int getFrameCount() const;
//	unsigned int getNumFrames() const;
//
//	/* 
//	 * Resets all of the recorded frames and restores the default state of
//	 * this recording. This must be called before making a new recording when
//	 * existing data exists.
//	 */
//	void reset();
//
//protected:
//	/* POINTER_OWNERSHIP: NO */
//	Simulations::MassSpringSimulation* simulation;
//
//	/* 
//	 * A collection of frames. Each frame contains an entry for each object
//	 * in the recorded mass-spring system.
//	 */
//	Util::ArrayList<MSM_SimulationFrame> frames;
//
//	/* Pointer to the next valid frame in this recording. */
//	unsigned int freeIndex;
//};
//
//}
//
//}
//
//}
//
//#endif
